<?php

/**
 * Fonctions utilitaires pour gérer le livre d'or
 */

require_once('../fct_dao_livreor.php');


/**
 * Retourne le livre d'or sous forme de Content XHTML
 * @param $livreOr livre d'or sous forme de tableau
 * @return string : content ATOM en XH TML
 */
function livreOrToXhtmlContent($livreOr) {
	if (!is_array($livreOr)) {
		//L'argument attendu n'est pas le bon
		throw new Exception('The requested argument is wrong : array expected', ERR_BAD_REQUEST);
	} elseif (count($livreOr) == 0) {
		//Aucun livre d'or en argument
		return '';
	} elseif (!isset($livreOr['NOM_PRENOM']) && !isset($livreOr['MESSAGE'])) {
		//Les paramètres attendus ne sont pas les bons
		throw new Exception('The requested argument is wrong : expected fields are not set', ERR_BAD_REQUEST);
	} else {
		$contentXHTML = '<span>'.$livreOr['NOM_PRENOM'].'</span>';
		$contentXHTML .= '<span>'.$livreOr['MESSAGE'].'</span>';
		return getContentEntryAtom($contentXHTML);
	}
}

/**
 * Construit et retourne un entry Atom à partir d'une ligne du livre d'or<br />
 * Retourne une exception si l'argument n'est pas un tableau ou ne contient pas les arguments attendus
 * @param array $livreOr
 * @throws Exception : BAD REQUEST
 * @return string : Entry atom
 */
function livreOrToEntryAtom($livreOr) {
	if (!is_array($livreOr)) {
		//L'argument attendu n'est pas le bon
		throw new Exception('The requested argument is wrong : array expected', ERR_BAD_REQUEST);
	} elseif (count($livreOr) == 0) {
		//Aucun livre d'or en argument
		return '';
	} elseif (!isset($livreOr['NOM_PRENOM']) && !isset($livreOr['MESSAGE']) && !isset($livreOr['ID'])) {
		//Les paramètres attendus ne sont pas les bons
		throw new Exception('The requested argument is wrong : expected fields are not set', ERR_BAD_REQUEST);
	} else {
		return buildEntryAtom($livreOr['NOM_PRENOM'], $livreOr['ID'], livreOrToXhtmlContent($livreOr));
	}
}

/**
 * Construit et retourne un feed Atom contenant les livres d'or donnés en argument
 * @param $listeLivreOr tableau de tableaux des livres d'or
 * @return string : feed Atom
 */
function listeLivreOrToFeedAtom($listeLivreOr) {
	if (!is_array($listeLivreOr)) {
		//L'argument attendu n'est pas le bon
		throw new Exception('The requested argument is wrong : array expected', ERR_BAD_REQUEST);
	} else {
		//Construction de la liste des entries
		$listeEntries = array();
		foreach ($listeLivreOr as $livreOr) {
			$listeEntries[] = livreOrToEntryAtom($livreOr);
		}
		
		//Construction du feed Atom
		return buildFeedAtom('Liste des livres d\'or', 'N/A', $listeEntries);
	}
}
